<?php

namespace app\common\extract;

use app\common\extract\Extract;

class ExtractText extends Extract
{
    /**
     * 抽取文件中的字符串
     */
    public function getArray()
    {
        if(!$this->_file)
        {
            return [];
        }
        $file = $this->checkCoding($this->_file);
        //获取文件数据, FILE_IGNORE_NEW_LINES：在数组每个元素的末尾不要添加换行符，FILE_SKIP_EMPTY_LINES：跳过空行
        $file_data = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        if (count($file_data) == 1 && $file_data[0] == null) {
            $file_data = [];
        }
        return $file_data;
     }
    /**
     * 为文件检查修改编码格式
     * @file 修改文件
     */
    protected function checkCoding($file)
    {
        if (!$file) {
            throw new \Exception("File is not exist!");
        }
        //取出文件，然后检测文件编码格式，如果不是utf-8，则修改
        $file_stream =  fopen($file, 'r+');
        $file_str = fread($file_stream, filesize($this->_file));
        //将字符串从GB2312转换为UTF-8
        $file_str = iconv('GB2312', 'UTF-8', $file_str) ? iconv('GB2312', 'UTF-8', $file_str) : $file_str;
        rewind($file_stream);
        fwrite($file_stream, $file_str);
        fclose($file_stream);
        return $file;
    }
}
